package com.ruoyi.statisticalCenter.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.domain.vo.InitTableVo;
import com.ruoyi.common.domain.vo.TableVo;
import com.ruoyi.common.service.TableService;
import com.ruoyi.logistic.domain.PageInfo;
import com.ruoyi.statisticalCenter.domain.ScContractAreaSendCostCalculate;
import com.ruoyi.statisticalCenter.domain.vo.ScContractAreaSendCostCalculateVo;
import com.ruoyi.statisticalCenter.mapper.ScContractAreaSendCostCalculateMapper;
import com.ruoyi.statisticalCenter.service.ScContractAreaSendCostCalculateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

@Service
public class ScContractAreaSendCostCalculateServiceImpl implements ScContractAreaSendCostCalculateService {
    @Autowired
    private ScContractAreaSendCostCalculateMapper scContractAreaSendCostCalculateMapper;

    @Autowired
    private TableService tableService;

    @Override
    public R collect(ScContractAreaSendCostCalculateVo vo) {
        PageHelper.startPage(vo.getPageDate());
        List<ScContractAreaSendCostCalculate> costCalculates = scContractAreaSendCostCalculateMapper.collect(vo);
//        assert costCalculates != null;
//        for (ScContractAreaSendCostCalculate costCalculate : costCalculates){
//            costCalculate.setLabelPurchaseUnitPrice(2.51);
//            costCalculate.setLabelRechargeUnitPrice(2.72);
//        }

        JSONObject jsonObject = new JSONObject();
        jsonObject.put("list", PageInfo.info(costCalculates));
        jsonObject.put("fields", getTableVo());

        if (costCalculates == null || costCalculates.size() == 0) {
            return R.ok("暂无数据");
        } else {
            return R.ok(jsonObject);
        }
    }

    public List<TableVo> getTableVo() {

        //一级标题
        List<TableVo> first = new ArrayList<>();
        TableVo firstTableVo = new TableVo();firstTableVo.setFields("contractAreaName");firstTableVo.setTranslate("承包区名称");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("dispatchParcelCount");firstTableVo.setTranslate("出件票数");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("transferFee");firstTableVo.setTranslate("包仓外中转费");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("transferExamine");firstTableVo.setTranslate("中转考核");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("totalOutboundReceivableFee");firstTableVo.setTranslate("全网出港费应收");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("bigA");firstTableVo.setTranslate("大货计重收费");
        List<TableVo> second = new ArrayList<>();
        TableVo secondTableVo = new TableVo();secondTableVo.setFields("largeCargoDeliveryChargeAmount");secondTableVo.setTranslate("金额");second.add(secondTableVo);
        secondTableVo = new TableVo();secondTableVo.setFields("largeCargoDeliveryChargeParcelCount");secondTableVo.setTranslate("票数");second.add(secondTableVo);
        secondTableVo = new TableVo();secondTableVo.setFields("largeCargoDeliveryChargeUnitPrice");secondTableVo.setTranslate("单价");second.add(secondTableVo);
        firstTableVo.setSunList(second);
        first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("bigDo");firstTableVo.setTranslate("大货操作费");
        second = new ArrayList<>();
        secondTableVo = new TableVo();secondTableVo.setFields("largeCargoHandlingFeeReceivableAmount");secondTableVo.setTranslate("金额");second.add(secondTableVo);
        secondTableVo = new TableVo();secondTableVo.setFields("largeCargoHandlingFeeReceivableParcelCount");secondTableVo.setTranslate("票数");second.add(secondTableVo);
        secondTableVo = new TableVo();secondTableVo.setFields("largeCargoHandlingFeeUnitPrice");secondTableVo.setTranslate("单价");second.add(secondTableVo);
        firstTableVo.setSunList(second);
        first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("fixedWarehousingFee");firstTableVo.setTranslate("包仓费");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("out");firstTableVo.setTranslate("出港操作费");first.add(firstTableVo);
        second = new ArrayList<>();
        secondTableVo = new TableVo();secondTableVo.setFields("outboundHandlingFeeReceivableAmount");secondTableVo.setTranslate("金额");second.add(secondTableVo);
        secondTableVo = new TableVo();secondTableVo.setFields("outboundHandlingFeeReceivableParcelCount");secondTableVo.setTranslate("票数");second.add(secondTableVo);
        secondTableVo = new TableVo();secondTableVo.setFields("outboundHandlingFeeUnitPrice");secondTableVo.setTranslate("单价");second.add(secondTableVo);
        firstTableVo.setSunList(second);
        firstTableVo = new TableVo();firstTableVo.setFields("jc");firstTableVo.setTranslate("基础派费收费调整");first.add(firstTableVo);
        second = new ArrayList<>();
        secondTableVo = new TableVo();secondTableVo.setFields("basicDeliveryChargeAdjustmentAmount");secondTableVo.setTranslate("金额");second.add(secondTableVo);
        secondTableVo = new TableVo();secondTableVo.setFields("basicDeliveryChargeAdjustmentParcelCount");secondTableVo.setTranslate("票数");second.add(secondTableVo);
        secondTableVo = new TableVo();secondTableVo.setFields("basicDeliveryChargeAdjustmentUnitPrice");secondTableVo.setTranslate("单价");second.add(secondTableVo);
        firstTableVo.setSunList(second);
        firstTableVo = new TableVo();firstTableVo.setFields("periodicDeliveryCharge");firstTableVo.setTranslate("周期性派费收费");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("townSubsidyCharge");firstTableVo.setTranslate("乡镇村业务费用");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("returnHandlingFee");firstTableVo.setTranslate("退件操作费");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("returnTransferFee");firstTableVo.setTranslate("退件中转费");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("enterReturnTransferFee");firstTableVo.setTranslate("进港退件操作费");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("irregularItemHandlingFee");firstTableVo.setTranslate("异形件操作费");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("enterIrregularItemHandlingFee");firstTableVo.setTranslate("进港异形件操作费");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("drayage");firstTableVo.setTranslate("短驳费");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("netFineReturnExamine");firstTableVo.setTranslate("网点违规退回考核");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("threeHundredComplaint");firstTableVo.setTranslate("三个100%投诉");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("overweightFineExamine");firstTableVo.setTranslate("违规重量考核");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("lanshouTimeExamine");firstTableVo.setTranslate("揽收时效考核");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("realNameExamine");firstTableVo.setTranslate("实名制考核收费");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("logisticsInfoExamine");firstTableVo.setTranslate("物流信息考核");first.add(firstTableVo);

        firstTableVo = new TableVo();firstTableVo.setFields("deliveryTimeExamine");firstTableVo.setTranslate("交货时效考核");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("contraband");firstTableVo.setTranslate("违禁品");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("encapsulationNotStandard");firstTableVo.setTranslate("合包不规范");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("errorSent");firstTableVo.setTranslate("错发件");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("violateUseThermalLabelReceipt");firstTableVo.setTranslate("热敏面单未规范使用");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("sheetBuyPrice");firstTableVo.setTranslate("面单购进单价");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("sheetCost");firstTableVo.setTranslate("面单成本");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("sheetTopUpPrice");firstTableVo.setTranslate("面单充值单价");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("sheetSaleroom");firstTableVo.setTranslate("面单销售额");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("sheetSurplus");firstTableVo.setTranslate("面单结余");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("payContractAreaRebate");firstTableVo.setTranslate("支付承包区返利合计");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("outBoundCost");firstTableVo.setTranslate("出港成本");first.add(firstTableVo);
        firstTableVo = new TableVo();firstTableVo.setFields("oneTicketCost");firstTableVo.setTranslate("单票成本");first.add(firstTableVo);

        return first;
    }
}
